#include <my_header.h>
// 向共享内存写内容
/* Usage: ./2_shmat_write */
int main(int argc, char *argv[]){                                  
    // 1.生产标识
    key_t keytag = ftok("./2_shmat_write.c", 10); // 获得key标记
    ERROR_CHECK(keytag, -1, "ftok");
    printf("key_t :%d\n", keytag);

    // 2. 创建共享内存 shmid：共享内存标识符
    int shmid = shmget(keytag, 4096, 0600 | IPC_CREAT);
    ERROR_CHECK(shmid, -1, "shmget");
    printf("shmid :%d\n", shmid); 
    
    // 3. 获取共享内存
    char *p = (char *)shmat(shmid, NULL, 0);
    ERROR_CHECK(p, NULL, "shmat");

    strcpy(p, "2_shmat_write.c开始写内容");

    return 0;
}
#if 0

//  **shmat函数**用于将共享内存段映射到当前进程的地址
//  空间，允许进程访问共享内存段中的数据。

void *shmat(
int shmid,
// 共享内存标识符，由 shmget 返回。
const void *shmaddr，// 指定共享内存连接到进程地址空间
的具体地址。建议NULL自动选择
int shmf1g // 标识权限。意义不大填0即可
);
//返回值:成功，返回共享内存段在进程地址空间中的起始地址，这
个地址是进程用于访问共享内存的指针。失败-1
#endif

